// Project name:JavaRedis
// Creator:muhong
// Date time:2022/12/13,11:21 下午
// Name:ChannelFuture

package org.gmh.channel;

import org.gmh.util.concurrent.Future;
import org.gmh.util.concurrent.GenericFutureListener;

public interface ChannelFuture extends Future<Void> {

    Channel channel();

    @Override
    Future<Void> addListener(GenericFutureListener<? extends Future<? super Void>> listener);

    @Override
    Future<Void> addListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);

    @Override
    Future<Void> removeListener(GenericFutureListener<? extends Future<? super Void>> listener);

    @Override
    Future<Void> removeListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);

    @Override
    Future<Void> sync() throws InterruptedException;

    @Override
    Future<Void> syncUninterruptibly();

    @Override
    Future<Void> await() throws InterruptedException;

    @Override
    Future<Void> awaitUninterruptibly();

    boolean isVoid();
}
